/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyecto;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author manuel.pena3
 */
public class LectorArchivo {

    public static void leer(String nombreArchivo, Usuario usuario) throws FileNotFoundException, IOException {
        File archivo = null;
        FileReader fr = null;
        BufferedReader br;
        String linea;
        try {
            archivo = new File(nombreArchivo);
            fr = new FileReader(archivo);
            br = new BufferedReader(fr);
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
            return;
        }
        while ((linea = br.readLine()) != null) {
            if (linea.charAt(0) == 'T') {
                Tarea tarea = new Tarea();
                String[] tokens = linea.split("; ");
                tarea.setNome(tokens[1]);
                String[] tokensFecha = tokens[2].split("-");
                tarea.setFechaInicio(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));
                tokensFecha = tokens[3].split("-");
                tarea.setFechaFin(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));
  
                usuario.asignarTarea(tarea);
            } else if (linea.charAt(0) == 'P') {
                Proyecto proyecto = new Proyecto();
                String[] tokens = linea.split("; ");
                proyecto.setNombre(tokens[1]);
                String[] tokensFecha = tokens[2].split("-");
                proyecto.setFechaInicio(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));
                tokensFecha = tokens[3].split("-");
                proyecto.setFechaFin(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));

                while (((linea = br.readLine()) != null) && ((linea.charAt(0) == 'T'))) {
                    Tarea tarea = new Tarea();
                    tokens = linea.split("; ");
                    tarea.setNome(tokens[1]);
                    tokensFecha = tokens[2].split("-");
                    tarea.setFechaInicio(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));
                    tokensFecha = tokens[3].split("-");
                    tarea.setFechaFin(new Date(Integer.parseInt(tokensFecha[0])-1900, Integer.parseInt(tokensFecha[1])-1, Integer.parseInt(tokensFecha[2])));
                    usuario.asignarTarea(tarea);
                    proyecto.anadirTarea(tarea);
                    br.mark(512); // Recuerda donde estamos leyendo
                }
                br.reset(); // Volvemos al punto antes de leer la siguiente linea
                usuario.asignarProyecto(proyecto);
            }
        }

    }

    public static void escribir(String nombreArchivo, Usuario usuario) throws IOException {
        FileWriter archivo = null;
        PrintWriter pw = null;
        SimpleDateFormat formatear = new SimpleDateFormat("yyyy-MM-dd");

        try {
            archivo = new FileWriter(nombreArchivo);
            pw = new PrintWriter(archivo);

            for (Tarea tarea : usuario.getTareas()) {
                if (tarea.getProyecto() == null) {
                    pw.println("T; " + tarea.getNome() + "; " + formatear.format(tarea.getFechaInicio()) + "; " + formatear.format(tarea.getFechaFin()));
                }
            }

            for (Proyecto proyecto : usuario.getProyectos()) {
                pw.println("P; " + proyecto.getNombre() + "; " + formatear.format(proyecto.getFechaInicio()) + "; " + formatear.format(proyecto.getFechaFin()));
                for (Tarea tarea : proyecto.getTareas()) {
                    pw.println("T; " + tarea.getNome() + "; " + formatear.format(tarea.getFechaInicio()) + "; " + formatear.format(tarea.getFechaFin()));
                }
            }
            archivo.close();
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
            return;
        }

    }

}
